A typical data storage system includes (i) a set of memory circuit boards which provides an input/output (I/O) cache and (ii) a set of disk drives. The I/O cache is volatile storage (i.e., semiconductor memory) that temporarily buffers data transferred between an external device (e.g., a host) and the set of disk drives.
One conventional data storage system further includes a front-end interface and a back-end interface. The front-end interface operates as an interface between the external device and the I/O cache by moving blocks of data (e.g., 512 byte sections) between the external device and the I/O cache. The back-end interface operates as an interface between the I/O cache and the set of disk drives by moving the data blocks between the I/O cache and the set of disk drives.
Each memory circuit board of the conventional data storage system is typically configured to respond to a small set of basic instructions such as READ, WRITE, ADD, and MASK-COMPARE-AND-SWAP commands. An interface (e.g., the front-end interface) can direct a memory circuit board to perform one of these basic instructions by sending a corresponding command and associated data to that memory circuit board. For example, a front-end interface can write data to the I/O cache by providing a WRITE command and a block of data to a memory circuit board, and subsequently provide another command to set the write pending bit corresponding to that cache slot. The memory circuit board responds to the WRITE command by storing the block of data in a cache slot, and to the subsequent command by setting the write pending bit. The back-end interface will subsequently detect the set write pending bit, copy the block of data from the cache slot to the set of storage devices and clear the write pending bit in order to synchronize the cache slot with the set of disk drives.